.. :validated: 3.2.0

Общий механизм работы
^^^^^^^^^^^^^^^^^^^^^^^^

Работу механизма автоматического монтирования в Linux обеспечивают несколько компонентов.

1. Служба ``autofs`` — запускает утилиту ``automount`` от имени суперпользователя в момент загрузки операционной системы. Это systemd-служба, входит в состав deb-пакета ``autofs``.
2. Утилита ``automount`` — обеспечивает расстановку ловушек монтирования и подключение целевых файловых систем общих ресурсов в соответствии с настройками из конфигурационных файлов, основными из которых являются ``/etc/autofs.conf`` и ``/etc/auto.master``. Утилита входит в состав deb-пакета ``autofs``.
3. Файловая система ``autofs`` — монтируется утилитой ``automount`` в первоначальный набор каталогов, чтобы превратить их в так называемые триггерные узлы (англ. trigger nodes) или ловушки монтирования (англ. mount traps). Файловая система реализована в виде модуля ядра операционной системы ``autofs4.ko``. Когда модуль файловой системы ``autofs`` перехватывает запрос пользователя к каталогу, в который еще не смонтирована целевая файловая система общего ресурса, модуль обращается к запущенному экземпляру утилиты ``automount`` для выполнения этой операции. Взаимодействие между модулем ``autofs4`` и утилитой ``automount`` осуществляется через именованные каналы (англ. FIFO, first input first output), файлы которых можно найти по маске ``/var/run/autofs.fifo-*``.
4. Файловая система ``cifs`` — монтируется утилитой ``automount`` по запросу со стороны модуля ядра ``autofs4``, когда пользователь обращается к файлам общего ресурса, для которого параметр «fstype» равен «cifs». Эта файловая система реализована в виде модуля ``cifs.ko``.
5. Утилита ``mount.cifs`` — вызывается утилитой ``automount`` для монтирования общих ресурсов по протоколу CIFS (SMB). Утилита входит в состав deb-пакета ``cifs-utils``.

Рассмотрим работу механизма автоматического монтирования на примере простой общей папки с документами. Допустим, что в файле ``/etc/auto.master`` у нас определена строка для подключения карты косвенного монтирования ``/etc/auto.docs``, а в карте ``/etc/auto.docs`` определена строка для монтирования общей папки ``share`` с файлового сервера ``fs-1.ald.company.lan`` в каталог ``/docs/share``:

.. code-block:: bash

    cat /etc/auto.master
    ...
    /docs                                   /etc/auto.docs
    ...

    cat /etc/auto.docs
    share  -fstype=cifs,user,sec=krb5,cruid=$UID,uid=$UID,gid=$UID     ://fs-1.ald.company.lan/share

На данном этапе, файл ``/docs`` является ловушкой монтирования в виртуальной файловой системе ``autofs``. При взаимодействии пользователя с ловушкой монтирования как с директорией, запускается процедура монтирования директории с файлового сервера общей папки ``share`` с файлового сервера ``fs-1.ald.company.lan`` в каталог ``/docs``. Поэтому ``/docs`` до момента взаимодействия с пользователем не является директорией.

Таким образом, в момент запуска утилита ``automount`` выполняет следующие действия:

* Загружает пространство имен, начиная с главного файла ``/etc/auto.master``.
* Создает каталог ``/docs``, если его не было ранее.
* Монтирует в каталог ``/docs`` файловую систему ``autofs``, чтобы установить ловушку монтирования. Проверить это можно с помощью утилиты ``findmnt``:

.. code-block:: bash

    sudo findmnt 
    TARGET                       SOURCE                      FSTYPE        OPTIONS
    ...
    └─/docs                      /etc/auto.docs              autofs        rw,relatime,fd=7,pgrp=10901...

Теперь при первом обращении пользователя к каталогу ``/docs/share``, например, с помощью утилиты ``cd`` или ``ls``, сработает ловушка монтирования, установленная на каталог ``/docs``. Модуль файловой системы ``autofs`` обратится к утилите ``automount``, которая создаст каталог ``share`` и смонтирует в него общую папку с файлового сервера с помощью утилиты ``mount``. Проверить это можно с помощью утилиты ``findmnt``:

.. code-block:: bash

    root@pc-1:~# findmnt 
    TARGET                       SOURCE           FSTYPE        OPTIONS
    /                            /dev/sda1        ext4          rw,relatime,errors=remount-ro
    ...
    └─/docs                      /etc/auto.docs autofs     rw,relatime,fd=7,pgrp=10901,timeout=300,...
    └─/docs/share              //fs-1.ald.company.lan/share   cifs        rw,nosuid,nodev,noexec,relatime, vers=3.1.1,sec=krb5,cruid=310400000,cache=strict,username=root,uid=310400000,noforceuid,gid=310400

Учитывая, что обычные пользователи работают с общими файловыми ресурсами не по прямым ссылкам, а из файлового менеджера, в файле ``/etc/autofs.conf`` рекомендуется установить параметр **browse_mode = yes**, чтобы имя общей папки ``share`` отображалось всегда, вне зависимости от того, примонтирована она или нет. По умолчанию установлено значение **no** для повышения производительности, но это актуально только в случае очень больших карт монтирования, в которых содержатся ссылки на десятки или даже сотни общих ресурсов. Не рекомендуется использование параметра ``--ghost`` в опциях монтирования карты ``auto.docs`` из главной карты, т.к. способ считается устаревшим.

